@@ -0,0 +1,52 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+from __future__ import division |
|
4 |
+ |
|
5 |
+from django_logit import logit |
|
6 |
+from django.conf import settings |
|
7 |
+from django_response import response |
|
8 |
+ |
|
9 |
+from household.models import HouseholdThermometerMeasureLogInfo, HouseholdThermometerEquipmentBindInfo |
|
10 |
+ |
|
11 |
+@logit |
|
12 |
+def mp_bind_thermometer(request): |
|
13 |
+ user_id = request.POST.get('user_id', '') |
|
14 |
+ macid = request.POST.get('macid', '') |
|
15 |
+ |
|
16 |
+ HouseholdThermometerEquipmentBindInfo.objects.get_or_create(user_id=user_id, macid=macid) |
|
17 |
+ |
|
18 |
+ return response() |
|
19 |
+ |
|
20 |
+ |
|
21 |
+def mp_thermometer_list(request): |
|
22 |
+ user_id = request.POST.get('user_id', '') |
|
23 |
+ eqpts = HouseholdThermometerEquipmentBindInfo.objects.filter(user_id=user_id, status=True) |
|
24 |
+ |
|
25 |
+ eqpts = [eqpt.data for eqpt in eqpts] |
|
26 |
+ |
|
27 |
+ return response(data={ |
|
28 |
+ eqpts: eqpts |
|
29 |
+ }) |
|
30 |
+ |
|
31 |
+ |
|
32 |
+def mp_upload_temperature(request): |
|
33 |
+ user_id = request.POST.get('user_id', '') |
|
34 |
+ macid = request.POST.get('macid', '') |
|
35 |
+ temperature = request.POST.get('temperature', '') |
|
36 |
+ |
|
37 |
+ HouseholdThermometerMeasureLogInfo.objects.create(user_id=user_id, macid=macid, temperature=temperature) |
|
38 |
+ |
|
39 |
+ return response() |
|
40 |
+ |
|
41 |
+ |
|
42 |
+def mp_temperature_list(request): |
|
43 |
+ user_id = request.POST.get('user_id', '') |
|
44 |
+ macid = request.POST.get('macid', '') |
|
45 |
+ |
|
46 |
+ logs = HouseholdThermometerMeasureLogInfo.objects.filter(macid=macid, status=True) |
|
47 |
+ |
|
48 |
+ logs = [log.data for log in logs] |
|
49 |
+ |
|
50 |
+ return response(data={ |
|
51 |
+ 'logs': logs |
|
52 |
+ }) |
@@ -3,7 +3,7 @@ |
||
3 | 3 |
from django.conf.urls import url |
4 | 4 |
|
5 | 5 |
from api import (admin_views, aep_views, antigen_views, eqpt_views, field_views, mini_views, oauth_views, point_views, |
6 |
- screen_views, wx_views, family_member_views) |
|
6 |
+ screen_views, wx_views, family_member_views, household_views) |
|
7 | 7 |
|
8 | 8 |
|
9 | 9 |
urlpatterns = [ |
@@ -98,3 +98,10 @@ urlpatterns += [ |
||
98 | 98 |
urlpatterns += [ |
99 | 99 |
url(r'^upload/antihelion$', antigen_views.upload_antigen, name='antigen_upload'), |
100 | 100 |
] |
101 |
+ |
|
102 |
+ |
|
103 |
+# Household |
|
104 |
+urlpatterns += [ |
|
105 |
+ url(r'^mp/household/thermometer/bind$', household_views.mp_bind_thermometer, name='mp_household_bind_thermometer'), |
|
106 |
+ url(r'^mp/household/temperature/upload$', household_views.mp_upload_temperature, name='mp_household_upload_temperature'), |
|
107 |
+] |
@@ -0,0 +1,15 @@ |
||
1 |
+from django.contrib import admin |
|
2 |
+ |
|
3 |
+from household.models import HouseholdThermometerMeasureLogInfo, HouseholdThermometerEquipmentBindInfo |
|
4 |
+ |
|
5 |
+ |
|
6 |
+class HouseholdThermometerEquipmentBindInfoAdmin(admin.ModelAdmin): |
|
7 |
+ list_display = ('bind_id', 'macid', 'user_id', 'status', 'created_at', 'updated_at') |
|
8 |
+ |
|
9 |
+ |
|
10 |
+class HouseholdThermometerMeasureLogInfoInfoAdmin(admin.ModelAdmin): |
|
11 |
+ list_display = ('macid', 'user_id', 'temperature', 'status', 'created_at', 'updated_at') |
|
12 |
+ |
|
13 |
+ |
|
14 |
+admin.site.register(HouseholdThermometerEquipmentBindInfo, HouseholdThermometerEquipmentBindInfoAdmin) |
|
15 |
+admin.site.register(HouseholdThermometerMeasureLogInfo, HouseholdThermometerMeasureLogInfoInfoAdmin) |
@@ -0,0 +1,6 @@ |
||
1 |
+from django.apps import AppConfig |
|
2 |
+ |
|
3 |
+ |
|
4 |
+class HouseholdConfig(AppConfig): |
|
5 |
+ default_auto_field = 'django.db.models.BigAutoField' |
|
6 |
+ name = 'household' |
@@ -0,0 +1,47 @@ |
||
1 |
+# Generated by Django 3.2.6 on 2022-12-12 06:51 |
|
2 |
+ |
|
3 |
+from django.db import migrations, models |
|
4 |
+import shortuuidfield.fields |
|
5 |
+ |
|
6 |
+ |
|
7 |
+class Migration(migrations.Migration): |
|
8 |
+ |
|
9 |
+ initial = True |
|
10 |
+ |
|
11 |
+ dependencies = [ |
|
12 |
+ ] |
|
13 |
+ |
|
14 |
+ operations = [ |
|
15 |
+ migrations.CreateModel( |
|
16 |
+ name='HouseholdThermometerEquipmentBindInfo', |
|
17 |
+ fields=[ |
|
18 |
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
19 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')), |
|
20 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
21 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
22 |
+ ('bind_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='绑定唯一标识', max_length=22, null=True, unique=True)), |
|
23 |
+ ('user_id', models.CharField(blank=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')), |
|
24 |
+ ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')), |
|
25 |
+ ], |
|
26 |
+ options={ |
|
27 |
+ 'verbose_name': '家用测温设备绑定信息', |
|
28 |
+ 'verbose_name_plural': '家用测温设备绑定信息', |
|
29 |
+ }, |
|
30 |
+ ), |
|
31 |
+ migrations.CreateModel( |
|
32 |
+ name='HouseholdThermometerMeasureLogInfo', |
|
33 |
+ fields=[ |
|
34 |
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
|
35 |
+ ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')), |
|
36 |
+ ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')), |
|
37 |
+ ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')), |
|
38 |
+ ('macid', models.CharField(blank=True, help_text='设备号', max_length=32, null=True, verbose_name='macid')), |
|
39 |
+ ('user_id', models.CharField(blank=True, help_text='用户唯一标识', max_length=32, null=True, verbose_name='user_id')), |
|
40 |
+ ('temperature', models.FloatField(default=0, help_text='用户体温', verbose_name='temperature')), |
|
41 |
+ ], |
|
42 |
+ options={ |
|
43 |
+ 'verbose_name': '家用测温记录信息', |
|
44 |
+ 'verbose_name_plural': '家用测温记录信息', |
|
45 |
+ }, |
|
46 |
+ ), |
|
47 |
+ ] |
@@ -0,0 +1,56 @@ |
||
1 |
+# -*- coding: utf-8 -*- |
|
2 |
+ |
|
3 |
+from django.db import models |
|
4 |
+from django.utils.translation import ugettext_lazy as _ |
|
5 |
+from django_models_ext import BaseModelMixin, SexModelMixin |
|
6 |
+from shortuuidfield import ShortUUIDField |
|
7 |
+from TimeConvert import TimeConvert as tc |
|
8 |
+ |
|
9 |
+ |
|
10 |
+class HouseholdThermometerEquipmentBindInfo(BaseModelMixin): |
|
11 |
+ bind_id = ShortUUIDField(_('bind_id'), max_length=32, blank=True, null=True, help_text='绑定唯一标识', db_index=True, unique=True) |
|
12 |
+ |
|
13 |
+ user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识') |
|
14 |
+ |
|
15 |
+ macid = models.CharField(_('macid'), max_length=32, blank=True, null=True, help_text='设备号') |
|
16 |
+ |
|
17 |
+ class Meta: |
|
18 |
+ verbose_name = _('家用测温设备绑定信息') |
|
19 |
+ verbose_name_plural = _('家用测温设备绑定信息') |
|
20 |
+ |
|
21 |
+ def __unicode__(self): |
|
22 |
+ return self.pk |
|
23 |
+ |
|
24 |
+ @property |
|
25 |
+ def data(self): |
|
26 |
+ return { |
|
27 |
+ 'bind_id': self.bind_id, |
|
28 |
+ 'user_id': self.user_id, |
|
29 |
+ 'macid': self.macid, |
|
30 |
+ 'created_at': tc.local_string(utc_dt=self.created_at), |
|
31 |
+ } |
|
32 |
+ |
|
33 |
+ |
|
34 |
+class HouseholdThermometerMeasureLogInfo(BaseModelMixin): |
|
35 |
+ macid = models.CharField(_('macid'), max_length=32, blank=True, null=True, help_text='设备号') |
|
36 |
+ |
|
37 |
+ user_id = models.CharField(_('user_id'), max_length=32, blank=True, null=True, help_text='用户唯一标识') |
|
38 |
+ |
|
39 |
+ temperature = models.FloatField(_('temperature'), default=0, help_text='用户体温') |
|
40 |
+ |
|
41 |
+ |
|
42 |
+ class Meta: |
|
43 |
+ verbose_name = _('家用测温记录信息') |
|
44 |
+ verbose_name_plural = _('家用测温记录信息') |
|
45 |
+ |
|
46 |
+ def __unicode__(self): |
|
47 |
+ return self.pk |
|
48 |
+ |
|
49 |
+ @property |
|
50 |
+ def data(self): |
|
51 |
+ return { |
|
52 |
+ 'macid': self.macid, |
|
53 |
+ 'user_id': self.user_id, |
|
54 |
+ 'temperature': self.temperature, |
|
55 |
+ 'created_at': tc.local_string(utc_dt=self.created_at), |
|
56 |
+ } |
@@ -0,0 +1,3 @@ |
||
1 |
+from django.test import TestCase |
|
2 |
+ |
|
3 |
+# Create your tests here. |
@@ -0,0 +1,3 @@ |
||
1 |
+from django.shortcuts import render |
|
2 |
+ |
|
3 |
+# Create your views here. |
@@ -58,6 +58,7 @@ INSTALLED_APPS = [ |
||
58 | 58 |
'api', |
59 | 59 |
'account', |
60 | 60 |
'equipment', |
61 |
+ 'household', |
|
61 | 62 |
] |
62 | 63 |
|
63 | 64 |
MIDDLEWARE = [ |